<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    ul, ol, li {
      list-style: none;
    }

    .box {
      width: 600px;
      height: 400px;
      border: 3px solid #333;
      margin: 50px auto;
      display: flex;
      flex-direction: column
    }

    .box > ul {
      height: 60px;
      display: flex;
    }

    .box > ul > li {
      flex: 1;
      background-color: skyblue;
      color: #fff;
      font-size: 22px;
      display: flex;
      justify-content: center;
      align-items: center;
      cursor: pointer;
    }

    .box > ul > li.active {
      background-color: orange;
    }

    .box > ol {
      flex: 1;
      position: relative;
    }

    .box > ol > li {
      width: 100%;
      height: 100%;
      background-color: purple;
      position: absolute;
      left: 0;
      top: 0;

      font-size: 100px;
      color: #fff;

      display: none;
    }

    .box > ol > li.active {
      display: block;
    }
  </style>
</head>
<body>

  <div class="box">
    <ul>
      <li class="active">1</li>
      <li>2</li>
      <li>3</li>
    </ul>
    <ol>
      <li class="active">1</li>
      <li>2</li>
      <li>3</li>
    </ol>
  </div>
  <script>
    // ul 中的li  是 所有的按钮 
    // ol 中的li  是 所有的内容 

    // 获取元素  ul 中的li 得到的是一个伪数组  当点击下标0对应的按钮
    // 获取元素  ol 中的li 得到的是一个伪数组  下标0对应的内容显示 
    //  当点击下标1对应的按钮
    //  下标0对应的内容显示 

    // 同一时刻 只能有一个按钮被选中  按钮高亮  也就是只有一个按钮 有class="active"
    // 其它的按钮没有active 
    // 只能有一个内容显示     只有一个内容 有 class="active" 其它没有  

    // 如何保证?
    // 点击下个按钮的之前做一件事情  让所有按钮取消 class=active 
    // 所有的内容取消 class=active  

    // 点击哪个那个按钮  哪个按钮增加 class="active" 这个按钮对应的下标也增加
    // class="active"  



    // 用户一直操作的是三个按钮  给三个按钮分别绑定点击事件 


    // 查找元素  
    var btns = [...document.querySelectorAll('ul > li')];
    var contents = [...document.querySelectorAll('ol > li')];

    // 给三个按钮分别绑定点击事件 

    for(var i=0;i<btns.length;i++){
        // 给每个选项卡编号 
        btns[i].dataset.id = i
        /* 
         <ul>
          <li class="active" data-id="0">1</li>
          <li data-id="1">2</li>
          <li data-id="2">3</li>
        </ul>
        
        
        */
        btns[i].onclick = function(){  // 里边是个局部作用域  
            // 当每个按钮都有了点击事件 循环已经完成了 
            // 循环完成以后 i 是3  
            // 所有不管点击哪个按钮 i 都是3 
            // alert(i);
            // 如何解决 
            // 每次循环给每个按钮编个号 
            // 点击谁 谁就是this 
            // alert(this.dataset.id); 
            // 在点击谁 谁高亮以前 移除所有按钮的 高亮 
            // 所有的内容隐藏  
            for(var j=0;j<btns.length;j++){
                btns[j].classList.remove('active');
                contents[j].classList.remove('active')

            }
            // 然后才是 点击谁 谁高亮 
            // 对应的内容显示   
            btns[this.dataset.id].classList.add('active');
            contents[this.dataset.id].classList.add('active')

        }
    }


    // forEach 下标必须从0开始 步长必须是1  
    // 一旦是0 永远是 0 

    // for 下标可以从别的数字开始  步长也可以是别的数字 
    // 下标因为是全局  可以被修改  
    
  </script>
</body>

</html>
